<!DOCTYPE html>
<html lang="zh-CN">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <script>
        var arr = ['a', 'b', 'c', 'b', 'a', 'f', 'b']
        // 第一种方法(forEach)
        var obj = {}
        arr.forEach(item => {
            obj[item] ? obj[item]++ : obj[item] = 1;
        })
        console.log(obj);

        // 第二种方法 (reduce)
        var obj = arr.reduce((obj, item) => {
            obj[item] ? obj[item]++ : obj[item] = 1;
            return obj
        }, {})
        console.log(obj);

        // 创建分页组件需要的 按钮数组
        // btnCount: 最多能看到几个按钮
        // total: 总条数
        // size: 每页几条
        // page: 当前第几页
        function f(total, size, page, btnCount) {
            // show me your code
            let arr = [] // 能看到的页码集合
            const pageNum = Math.ceil(total / size)
            arr[0] = page - Math.floor(btnCount / 2)
            arr[btnCount - 1] = page + Math.floor(btnCount / 2)
            if (arr[0] < 1) {
                arr = []
                for (let i = 1; i <= btnCount; i++) {
                    arr.push(i)
                }
            } else if (arr[btnCount - 1] > pageNum) {
                arr = []
                for (let j = pageNum; j > pageNum - btnCount; j--) {
                    arr.unshift(j)
                }
            } else {
                arr = []
                for (let k = page - Math.floor(btnCount / 2); k <= page + Math.floor(btnCount / 2); k++) {
                    arr.push(k)
                }
            }
            return arr
        }
        // 在可能的情况下，让page处于正中间
        // f(100, 10, 1, 5)  // ==> [1, 2, 3, 4, 5]
        // f(100, 10, 7, 5)  // ==> [5, 6, 7, 8, 9]
        // f(100, 10, 2, 5)  // ==> [1, 2, 3, 4, 5]
        // f(100, 10, 5, 5)  // ==> [3, 4, 5, 6, 7]
        

        // function f(total, size, page, btnCount) {
        //     // show me your code
        //     const arr = [] // 能看到的页码集合
        //     let d = null  //定义d等于空
        //     let ind = Math.ceil(total / size)  //总页数
        //     for (let i = 1; i <= ind; i++) {
        //         arr.push(i)   //将总页码从push到总页码数量
        //     }
        //     // 如果页码等于2就直接从0截取到可以看到的页码值
        //     if (page <= 2) return arr.slice(0, btnCount)
        //     // 如果等于3 就从1开始截取就是(2,3,4)
        //     if (page === 3) return arr.slice(1, btnCount + 1)
        //     // 否则就是大于3  大于3从自身前三位开始机器 截取到当前页码+可以看见的按钮 截取的是正确的数量就直接return  不是就删除后面的数量
        //     return d = arr.slice(page - 3, page + btnCount) && d.length === btnCount ? d : d.splice(btnCount)
        // }
        console.log(f(100, 10, 1, 5));
        console.log(f(100, 10, 4, 5));
        console.log(f(100, 10, 6, 5));
        console.log(f(100, 10, 7, 5));
        console.log(f(111, 10, 12, 7));
        console.log(f(100, 10, 9, 5));
        console.log('.....................');
        console.log(f(111, 10, 2, 7));
        console.log(f(111, 10, 9, 7));
        console.log(f(111, 10, 12, 7));
    </script>
</body>

</html>